March 15, 2021
자바스크립트와 외부 API를 이용해 구현 하는 나만의 유튜브 강의실
👍 좋아요 버튼을 누른 데이터만 필터링해서 보여줄 수 있는 메뉴를 만든다.
반응형 웹: 유저가 사용하는 디바이스의 가로 길이에 따라 검색결과의 row 당 column 갯수를 변경한다.
스크롤 페이징 방식을 이용해서 lazy loading을 개선한다.
위 요구사항을 통해 처음으로 lazy loading을 접하게 됐다. 여러 자료들을 보면서 lazy loading을 어떻게 구현할지에 대해 고민하게 됐다.
src
속성을 사용한다. HTML에서는 페이지가 열렸을 때 src
속성을 가진 태그를 무조건 로드한다.src
속성을 가진 태그가 몇 개 없을 때는 상관없지만 몇백, 몇천개가 있는 경우 심각한 성능상의 이슈를 초래할 수 있다.Javascript Event를 활용한 방법
Intersection Observer API를 활용한 방법
Native Lazy loadng을 사용하는 방법
<img>
, <iframe>
에 사용할 수 있는 해당 속성은 <img loading="lazy">
이런식으로 사용할 수 있다.이번에는 크로스 브라우징 이슈를 고려하지 않아도 돼서 <iframe>
에 lazy
속성을 주는 것으로 구현을 마쳤다. 미션을 진행하면서 점점 크로스 브라우징을 신경써야 할텐데 webpack
, babel
을 공부하자.
반응형 웹: 유저가 사용하는 디바이스의 가로 길이에 따라 검색결과의 row 당 column 갯수를 변경한다.
위 요구사항을 구현하기 위해 midea query를 사용하게 됐다. 이번에는 간단하게 너비만을 조건으로 걸어서 간단하게 구현할 수 있었지만 복잡한 경우에는 꽤나 까다로울거 같다.
3단계는 1, 2 단계와 비교하여 요구사항이 별로 없었다. 그러다보니 작성한 코드의 양도 많지 않았다.
리뷰어인 Jbee님에게 마지막으로 받은 피드백은 ‘객체를 불변으로 다뤄보는 습관’이다. 이번 미션을 진행하면서 대부분의 정보를 localStorage에서 관리하다보니 객체의 불변성에 대해 의식하지 못한 부분이 많았던거 같다.
다음 미션에서는 객체의 불변성을 유지하면서 상태를 관리할 수 있도록 노력해야겠다.